package com.example.myapplicationthirteen;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myapplicationthirteen.receivers.LocalBroadcastReceiver;

/**
 * 登录页面
 * 遵循核心原则：使用本地广播进行组件间通信，避免使用全局广播
 */
public class LoginActivity extends AppCompatActivity {
    private static final String TAG = "LoginActivity";
    private static final String CORRECT_USERNAME = "llll";
    private static final String CORRECT_PASSWORD = "666666";

    private EditText etUsername;
    private EditText etPassword;
    private Button btnLogin;
    private TextView tvError;
    private BroadcastManager broadcastManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        // 初始化视图
        etUsername = findViewById(R.id.et_username);
        etPassword = findViewById(R.id.et_password);
        btnLogin = findViewById(R.id.btn_login);
        tvError = findViewById(R.id.tv_error);

        // 初始化广播管理器（使用Application Context避免内存泄漏）
        broadcastManager = BroadcastManager.getInstance(getApplicationContext());

        // 设置登录按钮点击事件
        btnLogin.setOnClickListener(v -> handleLogin());
    }

    /**
     * 处理登录逻辑
     */
    private void handleLogin() {
        String username = etUsername.getText().toString().trim();
        String password = etPassword.getText().toString().trim();

        // 重置错误提示
        tvError.setVisibility(View.GONE);

        // 简单的输入验证
        if (username.isEmpty()) {
            showError("请输入用户名");
            return;
        }

        if (password.isEmpty()) {
            showError("请输入密码");
            return;
        }

        // 验证用户名和密码
        if (CORRECT_USERNAME.equals(username) && CORRECT_PASSWORD.equals(password)) {
            // 登录成功
            Toast.makeText(this, "登录成功！", Toast.LENGTH_SHORT).show();
            
            // 发送登录成功的本地广播（使用本地广播而非全局广播，遵循最佳实践）
            String loginSuccessMessage = "用户 " + username + " 登录成功";
            broadcastManager.sendLocalBroadcast(BroadcastManager.ACTION_LOGIN_SUCCESS, loginSuccessMessage);
            
            // 跳转到主页面
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            intent.putExtra("username", username);
            startActivity(intent);
            finish(); // 结束登录页面，防止返回
        } else {
            // 登录失败
            showError("用户名或密码错误，请重试");
        }
    }

    /**
     * 显示错误信息
     * @param errorMessage 错误信息
     */
    private void showError(String errorMessage) {
        tvError.setText(errorMessage);
        tvError.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 不需要在此处注销广播，因为我们没有在LoginActivity中注册广播接收器
        // 遵循动态注册必须注销的原则，但此处没有注册所以不需要注销
    }
}